The invention generally relates to a system and method for routing and reporting of customer interactions across voice, e-mail and Web channels, particularly with respect to systems supporting multi-client or multi-tenant call center applications. Companies have a need to identify and precisely route customer interactions based on the company's unique business criteria. Customer data and interaction history are used to make routing decisions, and deliver relevant information to agents so that they can most effectively meet a customer's needs or engage them in a new opportunity.
The term “process” as used herein refers to a UNIX or UNIX-like operating system term. In UNIX, while a program or command is running, it is called a process. A process exists for each UNIX command or program that is currently running. A process is also sometimes referred to as a “task.” Call center routing programs or processes typically simultaneously handle routing requests for voice calls, e-mails, web interactions, and other media types. Each interaction type and origination receives the proper treatment and priority according to the business rules of the enterprise.
Implemented strategies may include, for example:                Database-Driven Routing. Routing according to information stored in an enterprise's database system, such as customer profile information or account history.        Agent Profile Routing. Routing to the agent who possesses the skill or combination of skills needed to most effectively handle a customer.        Service-Level Routing. Routing according to the specified service level for a customer segment.        Last Agent or Relationship-based Routing. Routing to a specific agent such as the last agent who helped the customer or the personal agent of the customer.        Routing Across a multi-site contact center.        Enterprise Routing allows an enterprise to route incoming calls to the most appropriate agent in a multi-site contact center, regardless of location.        
Other call center applications display statistics and information in real time, allowing managers to view factors that are relevant to their business objectives. Call center applications also maintain a constant status of all contact center resources-agents, groups of agents, queues and ports within a single site, or across a multi-site contact center. Complete historical views of customer interactions and trends are provided by other call center applications.
The applications described above have been described with respect to an individual client running call center applications on a multi-client system, where the system is simultaneously hosting clients numbering, for example, in the hundreds. As a result, applications numbering in the thousands are being monitored and controlled by the multi-client system, creating a heavy processing burden for the system.
It is customary in the art to monitor, start and stop applications and resources with a single-threaded loop that serially checks the state of each application or resource and then takes appropriate action as necessary such as, for example, starting a required application. If a large number of applications are monitored in this fashion, however, the monitoring process becomes inefficient because of the length of the single-threaded loop and thus is unable to respond in a timely manner to events requiring action by the monitoring process.
Further, it is customary in the art, when there are multiple processes comprising applications, to encode inter-process dependencies and run-time priorities into the source files for the various programs controlling the applications. This technique is referred to in the art as hardcoding. When the applications become large and the number of processes become numerous, it becomes a difficult, time-consuming and error-prone task to maintain the high volume of inter-process dependencies and priorities.
There is a need for an improved method for configuring inter-process dependencies and run-time priorities in applications comprising a large number of processes in a multi-tenant environment.
Thus, there is also a need for a multi-tenant method that provides an improved, high-availability, monitoring process that responds to events in a multi-client call center system in an efficient, timely manner.